跳到主要内容

7.3-AOT & JIT

Create by fall on 12 Jan 2023 Recently revised in 12 Jan 2023

AOT

AOT:预编译

比如 vue 文件,如果是使用浏览器模板,会导致运行时还需要编译模板内容。

在构建期间去编译我们的代码,在浏览器中我们可以直接下载并运行编译后的代码:.vue 解析后生成的 .js

  • 更快的渲染速度

使用 AOT 后浏览器会下载应用程序编译后的代码并直接执行,而无需等待先编译应用程序。

  • 更小的文件体积

因为代码已经是编译后的代码,所以在最终的产物中就不需要包含 Angular 编译器,因此他会大大减少应用的负载。

  • 更早的检测代码中的错误

如果代码出现问题,不会通过预编译,在预编译时,即可发现问题

  • 更好的安全性

AOT 在将 HTML 模板和组件提供给客户端之前就将其编译为 JavaScript 文件,由于没有要阅读的模板,也没有危险的客户端 HTML 或 JavaScript 评估。

  • 更少的异步请求

编译器在 Javascript 中内联外部 HTML 模版和 CSS 样式,所以我们不需要单独发送 ajax 请求去请求这些文件。

JIT

Just In Time(即时编译)运行时去编译代码,每隔文件都是单独编译,更改该代码时,只需要更改该代码的文件,而不是整个项目

  • 易于开发调试

在 JIT 模式下可以生成映射文件,这样便于功能的实现和调试。

  • 编译时间短

因为大多数编译是在浏览器端完成的,因此编译时间会更少,因此对于一些大项目来说如果某些组件大部分时间不使用,那么此时使用 JIT 是最合适的。

  • 存储热点代码

如果某个方法或者代码块执行的特别频繁,那么就会被视为 热点代码,然后 JIT 就会对这部分代码进行编译并存储起来,下次使用时就可以直接从内存中读取。

参考文章

作者链接
西陵https://juejin.cn/post/7134209261428539422